package com.lt73.dynamicdatasource.entity;

import com.tangzc.mpe.actable.annotation.ColumnComment;
import com.tangzc.mpe.actable.annotation.Table;
import com.tangzc.mpe.annotation.DefaultValue;
import com.tangzc.mpe.annotation.InsertUpdateOptionDate;
import lombok.Data;

import java.util.Date;

/**
 * @Author: hanxiao
 * @Date: 2022/4/15 11:36
 */
@Data
@Table(comment = "文章")
public class Article {

    // 字符串类型的ID，默认也是雪花算法的一串数字（MP的默认功能）
    @ColumnComment("主键")
    private String id;

    @ColumnComment("标题")
    private String title;

    @ColumnComment("内容")
    private String content;

    // 默认值用法：文章默认激活状态，ACTIVE为ActicleStatusEnum[ACTIVE, INACTIVE]的枚举名称字符串
    @DefaultValue("ACTIVE")
    @ColumnComment("状态")
    private Integer status;

//    @ColumnComment("发布时间")
//    // 【插入】数据时候会自动获取系统当前时间赋值，支持多种数据类型，具体可参考@OptionDate注解详细介绍（注意，这里的时间是MP执行insert的操作的时候的时间，并不是对象构建时候的时间）
//    @InsertOptionDate
//    private Date publishedTime;
//
//    @ColumnComment("发布人")
//    // 【插入】的时候，自动填充用户id，UserIdAutoFillHandler看下面代码
//    @InsertOptionUser(UserIdAutoFillHandler.class)
//    private String publishedUserId;
//
//    @ColumnComment("发布人名字")
//    // 【插入】的时候，自动填充用户名字，UsernameAutoFillHandler看下面代码
//    @InsertOptionUser(UsernameAutoFillHandler.class)
//    private String publishedUsername;

    @ColumnComment("最后更新时间")
    // 【插入和更新】数据时候会自动获取系统当前时间赋值，支持多种数据类型，具体可参考@OptionDate注解详细介绍
    @InsertUpdateOptionDate
    private Date publishedTime;

    @ColumnComment("最后更新人")
    // 【更新】的时候，自动填充用户id，UserIdAutoFillHandler看下面代码
    // @UpdateOptionUser(UserIdAutoFillHandler.class)
    // 【插入和更新】的时候，自动填充用户id，UserIdAutoFillHandler看下面代码
    private String publishedUserId;

    @ColumnComment("最后更新人名字")
    // 【更新】的时候，自动填充用户名字，UsernameAutoFillHandler看下面代码
    // @UpdateOptionUser(UsernameAutoFillHandler.class)
    // 【插入和更新】的时候，自动填充用户名字，UsernameAutoFillHandler看下面代码
    private String publishedUsername;
}